/**
 * 单元名称：
 * 单元功能：获取并注入JS-SDK配置信息(所有需要使用JS-SDK的页面必须先注入配置信息，否则将无法调用)
 *          官方文档：https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4
 * 所属模块功能：
 * 创建人：liang
 * 创建时间：230823
 * 修改人：
 * 修改时间：
 */

import axios from 'axios'
import wx from 'weixin-js-sdk'

const baseURL = process.env.NODE_ENV === 'development' ? process.env.VUE_APP_URL : window.webConfig.webApiBaseUrl
export const getWxJssdkConfParams = (value, fmt) => {
  let url = `${baseURL}api/v1/LoginWeChat/Get_WX_JSSDK?url=${window.location.href.split('#')[0]}`
  return new Promise((resolve, reject) => {
    axios.get(url)
    .then(resp => {
      let res = resp.data.root
      if(res.response.errcode !== 0) {
        reject(res.response.errmsg)
        return
      }

      let { row, } = res.data,
          { appId, nonceStr, signature, timestamp, } = row[0]

      wx.config({
        debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来，若要查看传入的参数，可以在 pc 端打开，参数信息会通过 log 打出，仅在 pc 端时才会打印。
        appId: appId, // 必填，公众号的唯一标识
        timestamp: timestamp, // 必填，生成签名的时间戳
        nonceStr: nonceStr, // 必填，生成签名的随机串

        signature: signature, // 必填，签名
        jsApiList: ['scanQRCode', ], // 必填，需要使用的 JS 接口列表
      })

      wx.ready(() => {
        console.log('wx.ready')
        // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
        resolve(wx)
      })

      wx.error(err => {
        console.log('wx.error', err)
        reject(err)
      })
    })
  })
}
